@*
* Copyright 2016 LinkedIn Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*@

<p>
    This analysis shows the speed of tez input tasks.<br>
    This should allow you need to adjust the size of your input splits so that input is faster</p>
<p>
    This result of the analysis shows problems with tasks with significant slow speeds for the amount of data it needs
    to read.
</p>
<h5>Example</h5>
<p>
<div class="list-group">
    <a class="list-group-item list-group-item-danger" href="">
        <h4 class="list-group-item-heading">Mapper Speed</h4>
        <table class="list-group-item-text table table-condensed left-table">
            <thead><tr><th colspan="2">Severity: Critical</th></tr></thead>
            <tbody>
            <tr>
                <td>Number of tasks</td>
                <td>20</td>
            </tr>
            <tr>
                <td>Average task input size</td>
                <td>509 MB</td>
            </tr>
            <tr>
                <td>Average task speed</td>
                <td>56 KB/s</td>
            </tr>
            <tr>
                <td>Average task runtime</td>
                <td>2hr 5min 54sec</td>
            </tr>
            </tbody>
        </table>
    </a>
</div>
</p>
<h3>Suggestions</h3>
<p>
    In Tez input tasks sizes are computed by grouping splits together. Please check if tez.grouping.split-count=XX is set. If set, XX number of tasks will be used to read input data. 
		Else the verify if tez.grouping.min-size and tez.grouping.max-size  set to adjust the number of tasks being launched. 
		If there are multiple small files which need to combined, use 
		set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; 
		set mapreduce.input.fileinputformat.split.minsize and mapreduce.input.fileinputformat.split.maxsize<br>
    <br>
    If your tasks are spending a lot of time to read the input splits, check the hive.auto.convert.join.noconditionaltask.size
   size to see if large hash tables are being used for map joins. If large number of columns are being inserted, then try 
   reducing hive.exec.orc.default.buffer.size. If your job is inserting multiple partitions, then set the setting hive.optimize.sort.dynamic.partition
   to true
    <br>
</p>
